home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 4: GNU Archives / Linux Cubed Series 4 - GNU Archives.iso / gnu / gawk-3.000 / gawk-3 / gawk-3.0.0 / awklib / eg / prog / split.awk < prev    next >
Encoding:
Text File  |  1996-01-11  |  1.1 KB  |  55 lines

  1. # split.awk --- do split in awk
  2. # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
  3. # May 1993
  4.  
  5. # usage: split [-num] [file] [outname]
  6.  
  7. BEGIN    \
  8. {
  9.     outfile = "x"    # default
  10.     count = 1000
  11.     if (ARGC > 4)
  12.         usage()
  13.  
  14.     i = 1
  15.     if (ARGV[i] ~ /^-[0-9]+$/) {
  16.         count = -ARGV[i]
  17.         ARGV[i] = ""
  18.         i++
  19.     }
  20.     # test argv in case reading from stdin instead of file
  21.     if (i in ARGV)
  22.         i++    # skip data file name
  23.     if (i in ARGV) {
  24.         outfile = ARGV[i]
  25.         ARGV[i] = ""
  26.     }
  27.  
  28.     s1 = s2 = "a"
  29.     out = (outfile s1 s2)
  30. }
  31. {
  32.     if (++tcount > count) {
  33.         close(out)
  34.         if (s2 == "z") {
  35.             if (s1 == "z") {
  36.                 printf("split: %s is too large to split\n", \
  37.                        FILENAME) > "/dev/stderr"
  38.                 exit 1
  39.             }
  40.             s1 = chr(ord(s1) + 1)
  41.             s2 = "a"
  42.         } else
  43.             s2 = chr(ord(s2) + 1)
  44.         out = (outfile s1 s2)
  45.         tcount = 1
  46.     }
  47.     print > out
  48. }
  49. function usage(   e)
  50. {
  51.     e = "usage: split [-num] [file] [outname]"
  52.     print e > "/dev/stderr"
  53.     exit 1
  54. }
  55.